/** 阻塞和非阻塞 */

/**
 * 1、阻塞和非阻塞是针对进程状态而言的
 * 2、阻塞状态是指进程在执行过程中发生某些事件而被迫放弃CPU，进入等待状态 即同步执行
 * 3、非阻塞状态是指进程在执行过程中发生某些事件时，不会放弃CPU，而是继续执行 即异步执行
 */

const fs = require('fs')

// 阻塞代码示例 会等待文件读取完毕后再执行程序执行结束1
const data = fs.readFileSync('./server.md') // 阻塞代码 需要等待文件读取完毕后才能继续执行 同步执行
console.log(data.toString())
console.log('程序执行结束1')

// 非阻塞代码示例 会先执行程序执行结束2 然后再执行异步操作（文件读取完毕后的回调函数）
fs.readFile('./server.md', (err, data) => {
  // 非阻塞代码 不需要等待文件读取完毕就能继续执行 异步执行
  if (err) {
    console.log(err)
    throw err
  }
  console.log(data.toString())
})
console.log('程序执行结束2')
